package com.example.myapp.db;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.myapp.utils.Tools;

public  class DBUtils {

    //检测用户是否已经注册
    public static boolean isExistUser(Context context, SQLiteDatabase db, String username, String phone, String email){
        String queryUserSQL = "SELECT * FROM user";
        Cursor cursor = db.rawQuery(queryUserSQL, null);
        int isExistUserFlag=0;
        // 通过游标的方法可迭代查询结果
        while (cursor.moveToNext()){
            //查询用户名
            String queryUserName = cursor.getString(cursor.getColumnIndexOrThrow("username"));
            if (username.equals(queryUserName)){//如果查到的用户名与当前注册用户名相等
                Tools.toastTip(context,"该用户已经存在！");
                isExistUserFlag=1;
                break;
            }
            String queryPhone = cursor.getString(cursor.getColumnIndexOrThrow("phone"));
            if (phone.equals(queryPhone)){//如果查到的电话与当前注册用电话相等
                Tools.toastTip(context,"该电话已经被注册！");
                isExistUserFlag=1;
                break;
            }
            String queryEmail = cursor.getString(cursor.getColumnIndexOrThrow("email"));

            if (email.equals(queryEmail)){//如果查到的邮箱与当前注册用邮箱相等
                Tools.toastTip(context,"该邮箱已经被注册！");
                isExistUserFlag=1;
                break;
            }
        }
        //关闭游标
        cursor.close();
        //如果isExistUserFlag被改为1说明用户已经存在返回true ，否则返回false
        return  isExistUserFlag==1?true:false;
    }


    // 用户登录状态 ：
    //  userStatus
    //     1: 表示用户不存在提示用户去注册
    //     2: 表示用户存在但密码不匹配，提示密码输入错误，请重新输入！
    //     3:表示用户名和密码匹配成功：登录成功跳到首页

    //  注意：登录输入的用户名可以是用户名、电话或邮箱 ，查到了记录就可以匹配密码对不对
    public static int userLoginStatus( SQLiteDatabase db, String loginUsername, String loginPassword ){
        //用户登录状态，默认用户不存在
        int userStatus =1;
        Cursor cursor= null;
        //当登录用户名是用用户名时
        String sql1 = "SELECT * FROM user WHERE username=?";
        cursor = db.rawQuery(sql1, new String[]{loginUsername});

        // 通过游标的方法可迭代查询结果
        if(cursor.moveToFirst()) {
            //获取password和username值
            String queryUserPassword=cursor.getString(cursor.getColumnIndexOrThrow("password"));
            String queryUserName = cursor.getString(cursor.getColumnIndexOrThrow("username"));
            //有可能用户名对，密码不对

            if (loginUsername.equals(queryUserName)){//用户名匹配上了
                if (!cursor.isClosed()){//如果游标没关，关游标
                    cursor.close();//找到了就可以关游标了
                }
                if (!loginPassword.equals(queryUserPassword)){//密码匹配不上，提示并返回失败
                    //Tools.toastTip(context,"密码输入错误，请重新输入！");
                      return 2;
                }
                return 3; //匹配到了就返回3，说明用户名和密码对了
            }
        }
        //当登录用户名是用电话号时
        String sql2= "SELECT * FROM user WHERE  phone=?";
        cursor = db.rawQuery(sql2, new String[]{loginUsername});
        // 通过游标的方法可迭代查询结果
        if(cursor.moveToFirst()) {
            //获取password和phone值
            String queryUserPassword=cursor.getString(cursor.getColumnIndexOrThrow("password"));
            String queryPhone = cursor.getString(cursor.getColumnIndexOrThrow("phone"));
            if (loginUsername.equals(queryPhone)){//电话号匹配上了
                if (!cursor.isClosed()){//如果游标没关，关游标
                    cursor.close();//找到了就可以关游标了
                }
                if (!loginPassword.equals(queryUserPassword)){//密码匹配不上，提示并返回失败
                    //Tools.toastTip(context,"密码输入错误，请重新输入！");
                    return 2;
                }
                return 3; //匹配到了就返回3，说明电话和密码对了
            }
        }

        //当登录用户名的是用email时
        String sql3= "SELECT * FROM user WHERE  email=?";
        cursor = db.rawQuery(sql3, new String[]{loginUsername});
        // 通过游标的方法可迭代查询结果
        if(cursor.moveToFirst()) {
            //获取password和email值
            String queryUserPassword=cursor.getString(cursor.getColumnIndexOrThrow("password"));
            String queryEmail = cursor.getString(cursor.getColumnIndexOrThrow("email"));
            if (loginUsername.equals(queryEmail)){//邮箱匹配上了
                if (!cursor.isClosed()){//如果游标没关，关游标
                    cursor.close();
                }
                if (!loginPassword.equals(queryUserPassword)){//密码匹配不上，提示并返回失败
                   // Tools.toastTip(context,"密码输入错误，请重新输入！");
                    return 2;
                }
                return 3; //匹配到了就返回true，说明邮箱和密码对
            }
        }

        //都没匹配到返回，即用户都不存在，可以提示用户去注册了
        return  1;
    }







}
